package pers.chao.tool.date;

import cn.hutool.core.util.StrUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * Description: 常用日期格式
 *
 * @author W.Chao
 * @date 2020/11/11 23:05
 **/
public enum DatePattern {
	yyyyMMddHHmmss("yyyyMMddHHmmss", "yyyy-MM-dd HH:mm:ss"),
	yyyyMMdd("yyyyMMdd", "yyyy-MM-dd"),
	HHmmss("HHmmss", "HH:mm:ss"),
	yyyyMMddHHmm("yyyyMMddHHmm", "yyyy-MM-dd HH:mm"),
	yyyyMMddHHmmssSSS("yyyyMMddHHmmssSSS", "yyyy-MM-dd HH:mm:ss.SSS"),
	// UTC格式
	yyyyMMddTHHmmssZ("yyyyMMddTHHmmssZ", "yyyy-MM-dd'T'HH:mm:ss'Z'"),
	yyyyMMddTHHmmssSSSZ("yyyyMMddTHHmmssSSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
	yyyyMMddTHHmmssZ2("yyyyMMddTHHmmssZ2", "yyyy-MM-dd'T'HH:mm:ssZ"),
	yyyyMMddTHHmmssSSSZ2("yyyyMMddTHHmmssSSSZ2", "yyyy-MM-dd'T'HH:mm:ss.SSSZ");

	private String plain;
	private String pattern;

	DatePattern(String plain, String pattern) {
		this.plain = plain;
		this.pattern = pattern;
	}

	public String getPlain() {
		return plain;
	}

	public String getPattern() {
		return pattern;
	}

	public static List<String> getAllPattern() {
		DatePattern[] patterns = DatePattern.values();
		List<String> emptyList = new ArrayList<>();
		for (DatePattern pattern : patterns) {
			emptyList.add(pattern.getPattern());
		}
		return emptyList;
	}

	public static String of(String value) {
		String converted = StrUtil.strip(value, " ");
		DatePattern[] values = DatePattern.values();
		for (DatePattern v : values) {
			if (v.getPlain().equals(value)) {
				converted = v.getPattern();
				break;
			}
		}
		return converted;
	}
}
